An architecture for interpreted dynamic object-oriented languages
نویسنده
چکیده
of the thesis has been supplied on the condition that anyone who consults it is understood to recognise that its copyright rests with its author and that no quotation from the thesis and no information derived from it may be published without the prior written consent of the author. This thesis may be made available for consultation within the University Library and may be photocopied or lent to other libraries for the purposes of consultation. Summary This thesis is concerned with the implementation of object-oriented dynamic programming languages based on bytecode interpretation. A new interpretive implementation architecture is proposed that meets the requirements of code and system portability, execution performance , static and dynamic memory eeciency as well as language interoperability. The diierent quality of the architecture compared to other virtual machine approaches is related to the key techniques developed within this work: (i) C embedded virtual machine code, (ii) indexed code threading, (iii) optimal virtual instruction ordering and (iv) quasi-inline method caching. C embedded virtual machine code refers to the representation of bytecodes as constant C arrays that are located in sharable text segments after compilation. Interoperability, application start-up and dynamic memory usage beneet from this representation. Indexed code threading addresses the performance problem with virtual instruction mapping (i.e. loading, decoding and invoking) by using a fast threaded instruction transfer. Unlike with standard code threading, virtual machine code remains compact and executable also with a non-threaded virtual machine emulator. A further performance boost is achieved with optimal virtual instruction ordering. This technique helps to cluster the native code implementing virtual instructions so that native instruction cache performance is increased. Finally, the eeciency problem involved with dynamic method lookup is alleviated with an inline caching scheme that is applicable with constant bytecode vectors. The scheme exploits type locality similar to polymorphic inline caching. However, dynamic memory is saved by avoiding redundant method entries and by being adaptable to generic function invocation which typically comes in waves with hot-spots on particular methods. A realization of the architecture is presented in form of an implementation of the dynamic object-oriented language EuLisp. The implementation demonstrates the feasibility and eeec-tiveness of the proposed architecture. The average performance increase with indexed code threading is 14% (P5) and 17% (MIPS). The average increase with optimal instruction ordering in the indexed threaded interpreter is 21% (P5) and 15% (MIPS). Sharable read-only data is increased on average by …
منابع مشابه
Availability evaluation of Software architecture of object oriented Style using coloured Petri nets
Software architecture is one of the most fundamental products in the process of software development in the areas of behavioral or non- behavioral features like availability or transformability change. There are different ways to evaluate software architecture one of which is the creation of application model. An executable model of software architecture is an official description of architectu...
متن کاملA Dynamic Approach to Combine Components and Aspects
In this paper we discuss the use of a dynamic approach to combine components and aspects in order to form a CORBA-based application. We use AspectLua, an extension of an interpreted and dynamically typed language – Lua, which supports aspect-oriented programming. We describe the use of AspectLua in the context of a CORBA-based environment. AspectLua explores the reflexive features of Lua and th...
متن کاملAn Alternative Architecture for Objects: Lessons from the mushroom project
Over the last six years, the mushroom project at the University of Manchester has investigated alternative computer architectures for support of object-oriented systems. After much simulation and design study, we designed an architecture which we believe is especially suited to the characteristics of object-oriented systems, and constructed a prototype implementation of that architecture. Detai...
متن کاملUsing Reeection for Implementing Icom, an Interoperable Common Object Model
Reuse of already developed object-oriented software components is reduced when software is written in diierent object-oriented languages, or when it is not easy to relocate the software components from one machine to another machine. Software development in a distributed and heterogeneous environment is a solution to this problem. Several common object models have been deened for software devel...
متن کاملCompiling Java to SUIF: Incorporating Support for Object-Oriented Languages
A primary objective in the SUIF compiler design has been to develop an infrastructure for research in a variety of compiler topics including optimizations on object-oriented languages. However, the task of optimizing object-oriented languages requires that high-level object constructs be visible in SUIF. Java is a statically-typed, object-oriented and interpreted language that has the same requ...
متن کاملAn Interpreted Language for Distributed Programming 1 Motivation 1.1 Object-based Rpc and Static Compilation
The emerging trend in writing distributed applications is to use an object-based RPC system with a statically compiled, object-oriented language. While such a programming environment is adequate for many tasks, object-based RPC systems and statically compiled languages also have certain intrinsic limitations. These limitations become signiicant when writing applications which are both distribut...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1998